
package controllers;

import play.data.*;
import play.mvc.*;
import models.*;
import views.html.tipi.*;

public class Tipi extends Controller {
	
	static Form<Tipo> tipoForm = Form.form(Tipo.class);
	
	//SHOW
	@Security.Authenticated(Secured.class)
	public static Result tipi() {
		return ok(tipo.render(Tipo.find.orderBy("etichetta").findList(), tipoForm,false,false));
	}
	
	//NEW
	@Security.Authenticated(SecuredWriter.class)
	public static Result newTipo() {	
		
		Form<Tipo> filledForm = tipoForm.bindFromRequest();
		
		  if(filledForm.hasErrors()) {
			  return badRequest(nuovo_tipo.render(filledForm,false));
		  } 
		  else {
			  if(!Tipo.create(filledForm.get())){
				  return ok(nuovo_tipo.render(filledForm,true)); 
			  }
			  			  
			  return ok(tipo.render(Tipo.all(), tipoForm,false,true));
		  }
	}
	
	//DELETE
	@Security.Authenticated(SecuredWriter.class)
	public static Result deleteTipo(Long id) {
		if(!Tipo.delete(id)){
			return ok(tipo.render(Tipo.all(), tipoForm,true,false));
		}
		return ok(tipo.render(Tipo.all(), tipoForm,false,true));
	}
	
	
	//EDIT
	@Security.Authenticated(SecuredWriter.class)
	
	public static Result editTipo(Long id) {
		
		Tipo daModificare=Tipo.find.byId(id);
			    	    
	    Form<Tipo> filledForm = Form.form(Tipo.class).bindFromRequest();
	    
		if(filledForm.hasErrors()) {
			if(Tipo.update(daModificare)){
				return badRequest(edit_tipo.render(Tipo.all(), filledForm.fill(Tipo.find.byId(daModificare.id)),id,daModificare,false));
			}
			else return redirect(routes.Tipi.tipi());
		}
	   	else{
	   		
	   		daModificare.id=id;
	   		daModificare.etichetta=filledForm.get().etichetta;
	   			
	   		if(!Tipo.update(daModificare)){
	   			return ok(edit_tipo.render(Tipo.all(), filledForm.fill(Tipo.find.byId(daModificare.id)),id,daModificare,true));
	   		}
	   		return ok(tipo.render(Tipo.all(), tipoForm,false,true));
		} 
		
	}
}
	
	